package org.westos.service;

import org.springframework.stereotype.Service;
import org.westos.pojo.ChuFang;
import org.westos.pojo.ChufangDto;
import org.westos.pojo.ShowChu;

import java.util.List;

/**
 * 环境：
 * 表一：wait_check(只存待审核的处方表)
 * 表二：checked(只存审核通过的处方表)
 * 表三：all_sheet(总表，什么都有)
 * 表四：pre_medic(药品表)
 */

public interface ChufangService {
    /**
     * 医师开处方
     * 手动输入的参数：付费类别、患者姓名、年龄、体重、过敏史、临床诊断、住址、电话、审核药师、调配药师、核对/发药师、药品id、
       数量、用法用量、备注
     * 自动输入的参数：处方id、处方编号、医师、开具日期
     * 添加处方时的限制：
         1.付费类别只能是：0-3
         2.患者年龄：0-100
         3.电话：11位
     * 返回结果说明：
         1：操作成功，0：操作失败
     * @param chufangDto
     * @return
     */
    Integer addChu(ChufangDto chufangDto);

    /**
     * 审核药师审核处方
     * 手动输入的参数：处方的状态（0：待审核；1：审核通过；2：审核未通过）
     * 自动输入的参数：要审核的处方的id
     * 返回结果说明：
         1：添加处方成功；
         2：处方电话信息有问题
         3：处方年龄信息有问题
         4：处方付费方式有问题
         5：处方电话信息和年龄信息均有问题
         6：处方电话信息和付费方式均有问题
         7：处方年龄信息和付费方式均有问题
         8：处方电话信息、年龄信息和付费方式均有问题
     * @param prescription_id,state
     * @return
     */
    Integer checkChu(Integer prescription_id, Integer state, String audName);

    /**
     * 调配药师调配处方
     * 手动输入的参数：无
     * 自动输入的参数: 要调配的处方id
     * 自动生成的参数：自动生成调配师的签名
     * 返回结果说明：
         1：操作成功；0：操作失败
     * @param prescription_id
     * @return
     */
    Integer mixChu(Integer prescription_id, String allName);

    /**
     * 医师查询历史处方
     * 手动输入的参数：姓名
     * 参数要求：非空
     * 返回结果：
         拿到该医师相关的处方列表编（处方ID，处方号，患者姓名，诊断，电话，医师，审核药师，调配药师，开具日期）
     * @param docName
     * @return
     */
    List<ShowChu> queryByDoc(String docName);

    List<ShowChu> queryWaitByDoc(String docName);

    List<ShowChu> queryCheckedByDoc(String docName);

    /**
     * 医师查询单个历史处方
     * 手动输入的参数：处方id，姓名
     * 参数要求：非空
     * 返回结果：
     拿到对应id的处方
     * @param prescription_id,docName
     * @return
     */
    ChuFang queryByDocId(Integer prescription_id, String docName);
    /**
     * 审核医师查询历史处方
     * 手动输入的参数：姓名
     * 参数要求：非空
     * 返回结果：
       拿到该医师相关的处方列表（处方ID，处方号，患者姓名，诊断，电话，医师，审核药师，调配药师，开具日期）
     @param audName
     @return
     */
    List<ShowChu> queryByAud(String audName);

    List<ShowChu> queryWaitByAud(String audName);

    List<ShowChu> queryCheckedByAud(String audName);

    /**
     * 审核医师查询单个历史处方
     * 手动输入的参数：处方id，姓名
     * 参数要求：非空
     * 返回结果：
     拿到对应id的处方
     * @param prescription_id,audName
     * @return
     */
    ChuFang queryByAudId(Integer prescription_id, String audName);

    /**
     * 调配医师查询历史处方
     * 手动输入的参数：姓名
     * 参数要求:非空
     * 返回结果：
         拿到该医师相关的处方列表（处方ID，处方号，患者姓名，诊断，电话，医师，审核药师，调配药师，开具日期）
     *
     * */
    List<ShowChu> queryByAll(String allName);

    List<ShowChu> queryCheckedByAll(String allName);

    /**
     * 调配医师查询单个历史处方
     * 手动输入的参数：处方id，姓名
     * 参数要求：非空
     * 返回结果：
     拿到对应id的处方
     * @param prescription_id,allName
     * @return
     */
    ChuFang queryByAllId(Integer prescription_id, String allName);

    /**
     * 发药师查询历史处方
     * 手动输入的参数，姓名
     * 参数要求：非空
     * 返回结果：
         拿到该医师相关的处方列表（处方ID，处方号，患者姓名，诊断，电话，医师，审核药师，调配药师，开具日期）
     * @param disName
     * @return
     */
    List<ShowChu> queryByDis(String disName);

    void haha();

}

